﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using SLLottery.Common;
using SLLottery.LotterySrv;
using System.Windows.Media.Imaging;
namespace SLLottery.LotteryView.SSQ.Positive
{
    public partial class ZSSQ : UserControl
    {
        private LotterySrv.LotteryServiceClient srv;
        public ZSSQ()
        {
            InitializeComponent();
            srv = WcfProxy.GetProxy;
            srv.GetPlayTypeCompleted += new EventHandler<GetPlayTypeCompletedEventArgs>(srv_GetPlayTypeCompleted);
            srv.GetPlayTypeRadioCompleted += new EventHandler<GetPlayTypeRadioCompletedEventArgs>(srv_GetPlayTypeRadioCompleted);
            srv.GetPlayTypeNumCompleted += new EventHandler<GetPlayTypeNumCompletedEventArgs>(srv_GetPlayTypeNumCompleted);
            this.Loaded += new RoutedEventHandler(ZSSQ_Loaded);
        }
        void srv_GetPlayTypeCompleted(object sender, GetPlayTypeCompletedEventArgs e)
        {
            App.Session[Constant.SSQPLAYTYPE_SESSION] = e.Result.ToList();
            if (!App.Session.ContainsKey(Constant.PLAYTYPERADIO_SESSION))
            {
                srv.GetPlayTypeRadioAsync() ;
            }
            else if (!App.Session.ContainsKey(Constant.PLAYTYPENUM_SESSION))
            {
                srv.GetPlayTypeNumAsync();
            }
            else
            {
                InitPage();
            }
        }
        void srv_GetPlayTypeRadioCompleted(object sender, GetPlayTypeRadioCompletedEventArgs e)
        {
            App.Session[Constant.PLAYTYPERADIO_SESSION] = e.Result.ToList();
            if (!App.Session.ContainsKey(Constant.PLAYTYPENUM_SESSION))
            {
                srv.GetPlayTypeNumAsync();
            }
            else
            {
                InitPage();
            }
        }
        void srv_GetPlayTypeNumCompleted(object sender, GetPlayTypeNumCompletedEventArgs e)
        {
            App.Session[Constant.PLAYTYPENUM_SESSION] = e.Result.ToList();
            InitPage();
        }
        void ZSSQ_Loaded(object sender, RoutedEventArgs e)
        {
            if (!App.Session.ContainsKey(Constant.PLAYTYPE_SESSION)
|| App.Session[Constant.PLAYTYPE_SESSION] == null)
            {
                srv.GetPlayTypeAsync((int)LotteryType.SSQ);
            }
            else if (!App.Session.ContainsKey(Constant.PLAYTYPERADIO_SESSION))
            {
                srv.GetPlayTypeRadioAsync();
            }
            else if (!App.Session.ContainsKey(Constant.PLAYTYPENUM_SESSION))
            {
                srv.GetPlayTypeNumAsync();
            }
            else
            {
                List<PlayTypeInfo> list = App.Session[Constant.PLAYTYPE_SESSION] as List<PlayTypeInfo>;
                list = list.Where(p => p.LotteryTypeID1 == (int)LotteryType.SSQ).ToList();
                App.Session[Constant.SSQPLAYTYPE_SESSION] = list;
                InitPage();
            }
                
        }
        private void PlayTypeButton_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            Controls.PlayTypeButton Btn = (Controls.PlayTypeButton)sender;
            Border border = Btn.border;
            ImageBrush imageBrush = new ImageBrush();
            imageBrush.ImageSource = new BitmapImage(new Uri("/SLLottery;component/Images/Btn_Bg_Org.png", UriKind.Relative));
            border.Background = imageBrush;
            foreach (Controls.PlayTypeButton btn in buttonPanel.Children)
            {
                if (!Btn.Equals(btn))
                {
                    Border b = btn.border;
                    imageBrush = new ImageBrush();
                    imageBrush.ImageSource = new BitmapImage(new Uri("/SLLottery;component/Images/Btn_Bg_Black.png", UriKind.Relative));
                    b.Background = imageBrush;
                }
            }
            Redirect(Btn);
        }
        void InitPage()
        {
            List<PlayTypeInfo> list = App.Session[Constant.SSQPLAYTYPE_SESSION] as List<PlayTypeInfo>;
            if (list == null || list.Count == 0)
            {
                Messager.Show("双色球模块暂时故障!");
                App.Current.RootVisual = new LoginPage();
                return;
            }
            foreach (PlayTypeInfo l in list)
            {
                Controls.PlayTypeButton btn = new Controls.PlayTypeButton();
                btn.Text = l.PlayTypeName;
                btn.Tag = (PlayType)l.PlayTypeID;
                btn.MouseLeftButtonDown += new MouseButtonEventHandler(PlayTypeButton_MouseLeftButtonDown);
                buttonPanel.Children.Add(btn);
                if (list.First() == l)
                    PlayTypeButton_MouseLeftButtonDown(btn, null);
            }
        }
        void Redirect(Controls.PlayTypeButton btn)
        {
            if (XuanHaoPanel.Children.Count > 0)
            {
                XuanHaoPanel.Children.Clear();
            }
            Controls.TouZhuCtrl touzhu = new Controls.TouZhuCtrl();
            MainPage.TouzhuControl = touzhu;
            MainPage.playType = Convert.ToInt32(btn.Tag);
            DockPanel dockPanel = new DockPanel();
            dockPanel.LastChildFill = true;
            dockPanel.Width = 658;

            Grid grid = new Grid();
            grid.RowDefinitions.Insert(0, new RowDefinition() { Height = new GridLength() });
            grid.RowDefinitions.Insert(1, new RowDefinition() { Height = new GridLength(25) });

            Controls.NumPanel numPanel = new Controls.NumPanel(8, 2);
            Controls.RadioButtonPanel rbPanel = new Controls.RadioButtonPanel();
            grid.Children.Add(numPanel);
            grid.Children.Add(rbPanel);
            numPanel.SetValue(Grid.RowProperty, 0);
            rbPanel.SetValue(Grid.RowProperty, 1);

            //Controls.TouZhuCtrl touzhu = new Controls.TouZhuCtrl();
            //TouzhuControl = touzhu;
            touzhu.lotteryType = LotteryType.SSQ;
            touzhu.PlayType = (int)btn.Tag;
            touzhu.numPanel = numPanel;
            touzhu.rbPanel = rbPanel;
            touzhu.btBonus.IsEnabled = false;
            touzhu.PlayTypeName = btn.Text;
            //添加按钮
            touzhu.btnAdd.Click += (s, e) =>
            {
                string num = numPanel.GetChoosedNum((SSQPlayType)btn.Tag);
                if (num.Length == 0)
                {
                    Messager.Show("号码不完整,无法添加");
                    return;
                }
                if (num.StartsWith("@"))
                {
                    Messager.Show(num.Replace("@", ""));
                    return;
                }
                string[] nums = num.Split(' ');
                foreach (string n in nums)
                {
                    touzhu.NumBasket.Items.Add(n);
                    ListBoxItem item = (ListBoxItem)(touzhu.NumBasket.ItemContainerGenerator.ContainerFromItem(
                        touzhu.NumBasket.Items[touzhu.NumBasket.Items.Count - 1]));
                    switch ((PlayType)btn.Tag)
                    {
                        case PlayType._SSQBlue:
                            item.Width = 300;
                            break;
                        case PlayType._SSQRed:
                            item.Width = 560;
                            break;
                    }
                }
                numPanel.ClearAllNums();
                touzhu.lbBetCount.Text = BetCountCalc.GetBetCount
                    (touzhu.NumBasket, (PlayType)btn.Tag, numPanel.isWriten,
                     ((PlayTypeRadio)Convert.ToInt32(rbPanel.GetChoosedRadioButton().Tag.ToString())).ToString()
                    ).ToString();
            };
            DockPanel.SetDock(grid, Dock.Top);
            dockPanel.Children.Add(grid);
            DockPanel.SetDock(touzhu, Dock.Top);
            dockPanel.Children.Add(touzhu);
            XuanHaoPanel.Children.Add(dockPanel);
            List<PlayTypeRadioInfo> list_radio = App.Session[Constant.PLAYTYPERADIO_SESSION] as List<PlayTypeRadioInfo>;
            list_radio = (from l in list_radio where l.PlayTypeID1 == (int)((PlayType)btn.Tag) select l).ToList();
            List<PlayTypeNumInfo> list_num = App.Session[Constant.PLAYTYPENUM_SESSION] as List<PlayTypeNumInfo>;
            list_num = (from l in list_num where l.PlayTypeID1 == (int)((PlayType)btn.Tag) select l).ToList();
            string numPanelText = string.Empty;
            string rbPanelText = string.Empty;
            string rbPanelValue = string.Empty;
            foreach (PlayTypeRadioInfo p in list_radio)
            {
                if (p == list_radio.First())
                    MainPage.playTypeRadio = Convert.ToInt32(p.PlayTypeRadioID);
                rbPanelText += p.PlayTypeRadioName;
                rbPanelValue += p.PlayTypeRadioID.ToString();
                if (p != list_radio.Last())
                {
                    rbPanelValue += ",";
                    rbPanelText += ",";
                }
            }
            foreach (PlayTypeNumInfo p in list_num)
            {
                numPanelText += p.PlayTypeNumName;
                if (p != list_num.Last())
                    numPanelText += ",";
            }
            numPanel.Text = numPanelText;
            rbPanel.Text = rbPanelText;
            rbPanel.Value = rbPanelValue;
            if ((PlayType)btn.Tag == PlayType._SSQRed)
            {
                numPanel.ColNum = 11;
                numPanel.RowNum = 3;
            }
            rbPanel.CreateElement();
            numPanel.CreateElement();
            foreach (RadioButton rb in rbPanel.PlayTypePanel.Children)
            {
                rb.Checked += (s, er) =>
                {
                    touzhu.NumBasket.Items.Clear();
                    numPanel.ClearChild();
                    numPanel.isCreated = false;
                    numPanel.CreateElement();
                };
            }
        }
        #region drop
        //void rb_Checked(object sender, RoutedEventArgs e)
        //{
        //    RadioButton btn = (RadioButton)sender;
        //    User user = App.Session[Constant.USERINFO_SESSION] as User;
        //    DockPanel dockPanel=  (DockPanel)this.XuanHaoPanel.Children[0];
        //    Controls.TouZhuCtrl touzhu = new Controls.TouZhuCtrl();
        //    touzhu.NumBasket.Items.Clear();
        //    Grid _grid= (Grid)dockPanel.Children[0];
        //    Controls.NumPanel numPanel = (Controls.NumPanel)_grid.Children[0];
        //    Controls.RadioButtonPanel rbPanel = (Controls.RadioButtonPanel)_grid.Children[1];
        //    touzhu.btBonus.IsEnabled = false;
        //    touzhu.lotteryType = LotteryType.SSQ;
        //    touzhu.lbBackPct.Text = user.Bonus.ToString("F2") + "%";
        //    List<PlayTypeRadioInfo> list_radio = App.Session[Constant.PLAYTYPERADIO_SESSION] as List<PlayTypeRadioInfo>;
        //    list_radio = (from l in list_radio where l.PlayTypeID1 == (int)((PlayType)btn.Tag) select l).ToList();
        //    List<PlayTypeNumInfo> list_num = App.Session[Constant.PLAYTYPENUM_SESSION] as List<PlayTypeNumInfo>;
        //    list_num = (from l in list_num where l.PlayTypeID1 == (int)((PlayType)btn.Tag) select l).ToList();
        //    string rbPanelText = string.Empty;
        //    foreach (PlayTypeRadioInfo p in list_radio)
        //    {
        //        rbPanelText += p.PlayTypeRadioName;
        //        if (p != list_radio.Last())
        //            rbPanelText += ",";
        //    }
        //    rbPanel.Text = rbPanelText;
        //    if (list_num.Count > 0)
        //        numPanel.Text = list_num[0].PlayTypeNumName;
        //    else
        //    {
        //        Messager.Show("双色球模块暂时故障!");
        //        App.Current.RootVisual = new LoginPage();
        //        return;
        //    }
        //    rbPanel = new Controls.RadioButtonPanel();
        //    rbPanel.ChoosedIndex = 0;
        //    rbPanel.Text = rbPanelText;
        //    if ((int)btn.Tag==0)
        //    {
        //        touzhu.lbBonus.Text = (Constant.SSQBlueScale / 2).ToString("F2");
        //        touzhu.lbScale.Text = Constant.SSQBlueScale.ToString("F2");
        //    }
        //    else
        //    {
        //        touzhu.PlayType = (int)SSQPlayType.Red;
        //        numPanel = new Controls.NumPanel(11, 3);
        //        numPanel.Text = "红码";
        //        rbPanel = new Controls.RadioButtonPanel();
        //        rbPanel.ChoosedIndex = 1;
        //        rbPanel.Text = "蓝码,红码";
        //        touzhu.lbBonus.Text = (Constant.SSQRedScale / 2).ToString("F2");
        //        touzhu.lbScale.Text = Constant.SSQRedScale.ToString("F2");
        //    }
        //    numPanel.SetValue(Grid.RowProperty, 0);
        //    rbPanel.SetValue(Grid.RowProperty, 1);
        //    rbPanel.CreateElement();
        //    numPanel.CreateElement();
        //    foreach (RadioButton rb in rbPanel.PlayTypePanel.Children)
        //    {
        //        rb.Checked += new RoutedEventHandler(rb_Checked);
        //    }
        //    _grid.Children[0] = numPanel;
        //    _grid.Children[1] = rbPanel;
        //    dockPanel.Children[1]=touzhu;
        //    DockPanel.SetDock(touzhu, Dock.Top);
        //    //添加按钮
        //    touzhu.btnAdd.Click += (s, er) =>
        //    {
        //        string num = numPanel.GetChoosedNum();
        //        if (num.Length == 0)
        //        {
        //            Messager.Show("号码不完整,无法添加");
        //            return;
        //        }
        //        if (touzhu.NumBasket.Items.Contains(num))
        //        {
        //            Messager.Show("已经存在的号码,无法添加");
        //            return;
        //        }
        //        touzhu.NumBasket.Items.Add(num);
        //        if (touzhu.NumBasket.Items.Count > 0)
        //            touzhu.NumBasket.SelectedIndex = touzhu.NumBasket.Items.Count - 1;
        //        ListBoxItem item = (ListBoxItem)(touzhu.NumBasket.ItemContainerGenerator.ContainerFromItem(
        //            touzhu.NumBasket.Items[touzhu.NumBasket.Items.Count - 1]));
        //        item.Width = 600;
        //        numPanel.ClearAllNums();
        //    };
        //    //清空按钮
        //    touzhu.btnClear.Click += (s, er) =>
        //    {
        //        touzhu.NumBasket.Items.Clear();
        //    };
        //    touzhu.btBonus.IsEnabled = false;

        //}
        #endregion
    }
}
